import request from '@/utils/request'
import store from '@/store'

export function getChannelArticleList (params) {
  return request({
    url: 'articles',
    params
  })
}

export async function getUserChannels () {
  if (!store.state.user.token) {
    const localData = JSON.parse(window.localStorage.getItem('localChannels') || '[]') // KEY===token
    if (localData.length) {
      // 保持和res一样的结构，使用这个API的地方就无需修改
      return localData
    } else {
      // 获取数据本地缓存
      const [err, data] = await request({ url: '/user/channels' })
      if (err) return this.$toast.fail(err)
      // 只存数组
      console.log('我是存储到数组中的data数据', data.data.data.channels)
      window.localStorage.setItem('localChannels', JSON.stringify(data.data.data.channels))
      console.log('添加到本地存储成功', data.data.data.channels)
      return data.data.data.channels
    }
  } else {
    const [err, data] = await request({ url: '/user/channels' })
    if (err) this.$toast.fail(err)
    console.log('channels数据添加成功', data.data.data.channels)
    return data.data.data.channels
  }
}

export function getAllChannels () {
  return request({
    url: 'channels'
  })
}

//  * 获取我的频道（未登录会返回默认的一些频道）

// export const getMyChannels = async () => {
//   if (!store.state.user.token) {
//     const localData = JSON.parse(window.localStorage.getItem('localChannels') || '[]') // KEY===token
//     if (localData.length) {
//       // 保持和res一样的结构，使用这个API的地方就无需修改
//       return localData
//     } else {
//       // 获取数据本地缓存
//       const [err, data] = await request({ url: '/user/channels' })
//       if (err) return this.$toast.fail(err)
//       // 只存数组
//       console.log('开始存储本地数据')
//       window.localStorage.setItem('localChannels', JSON.stringify(data.data.data.channels))
//       return data.data.data.channels
//     }
//   } else {
//     const [, res] = await request({ url: '/user/channels' })
//     return res.data.data.channels
//   }
// }

// 添加操作
export const addChannel = async (myChannels) => {
  if (!store.state.user.token) {
    const localData = JSON.parse(window.localStorage.getItem('localChannels' || '[]'))
    const { id, name } = myChannels[myChannels.length - 1]
    localData.push({ id, name })
    localStorage.setItem('localChannels', JSON.stringify(localData))
    return JSON.parse(window.localStorage.getItem('localChannels') || '[]')
  } else {
    const [err, data] = await request({
      url: '/user/channels',
      method: 'PUT',
      data: {
        channels: myChannels
      }
    })
    if (err) return this.$toast.fail(err)
    return data.data.data.channels
  }
}

// 删除
export const delChannel = async (id) => {
  if (!store.state.user.token) {
    const localData = JSON.parse(window.localStorage.getItem('localChannels') || '[]')
    const index = localData.findIndex(item => {
      return item.id === id
    })
    localData.splice(index, 1)
    window.localStorage.setItem('localChannels', JSON.stringify(localData))
  } else {
    const [err, data] = await request({
      url: '/user/channels/' + id,
      method: 'delete'
    })
    if (err) return this.$toast.fail(err)
    console.log('该删除成功', data)
  }
}
